Many enterprise data processing systems rely on distributed database servers to store and manage data. Such enterprise data processing systems typically follow a multi-tier model that has a distributed database server in the first tier, one or more computers in the middle tier linked to the database server via a network, and one or more clients in the outer tier.
Clustered Computing System
A clustered computing system is a collection of interconnected computing elements that provide processing to a set of client applications. Each of the computing elements is referred to as a node. A node may be a computer interconnected to other computers, or a server blade interconnected to other server blades in a grid. A group of nodes in a clustered computing system that have shared access to storage (e.g., have shared disk access to a set of disk drives or non-volatile storage) and that are connected via interconnects is referred to herein as a work cluster.
A clustered computing system is used to host clustered servers. A server is combination of integrated software components and an allocation of computational resources, such as memory, a node, and processes on the node for executing the integrated software components on a processor, where the combination of the software and computational resources are dedicated to providing a particular type of function on behalf of clients of the server. An example of a server is a database server. Among other functions of database management, a database server governs and facilitates access to a particular database, processing requests by clients to access the database.
Resources from multiple nodes in a clustered computing system can be allocated to running a server's software. Each allocation of the resources of a particular node for the server is referred to herein as a “server instance” or instance. A database server can be clustered, where the server instances may be collectively referred to as a cluster. Each instance of a database server facilitates access to the same database, in which the integrity of the data is managed by a global lock manager.
Services for Managing Applications According to Service Levels
Services are a feature for database workload management that divide the universe of work executing in the database, to manage work according to service levels. Resources are allocated to a service according to service levels and priority. Services are measured and managed to efficiently deliver the resource capacity on demand. High availability service levels use the reliability of redundant parts of the cluster.
Services are a logical abstraction for managing workloads. Services can be used to divide work executing in a database cluster into mutually disjoint classes. Each service can represent a logical business function, e.g., a workload, with common attributes, service level thresholds, and priorities. The grouping of services is based on attributes of the work that might include the application function to be invoked, the priority of execution for the application function, the job class to be managed, or the data range used in the application function of a job class. For example, an electronic-business suite may define a service for each responsibility, such as general ledger, accounts receivable, order entry, and so on. Services provide a single system image to manage competing applications, and the services allow each workload to be managed in isolation and as a unit. A service can span multiple server instances in a cluster or multiple clusters in a grid, and a single server instance can support multiple services.
Middle tier and client/server applications can use a service by, for example, by specifying the service as part of the connection. For example, application server data sources can be set to route to a service. In addition, server-side work sets the service name as part of the workload definition. For example, the service that a job class uses is defined when the job class is created, and during execution, jobs are assigned to job classes and job classes run within services.
Database Sessions
In order for a client to interact with a database server on a database cluster, a session is established for the client. Each session belongs to one service. A session, such as a database session, is a particular connection established for a client to a server, such as a database instance, through which the client issues a series of requests (e.g., requests for execution of database statements). For each database session established on a database instance, session state data is maintained that reflects the current state of a database session. Such information contains, for example, the identity of the client for which the session is established, the service used by the client, and temporary variable values generated by processes executing software within the database session. Each session may each have its own database process or may share database processes, with the latter referred to as multiplexing.
Connections are mechanisms for enabling sessions. A connection may refer to either a physical mechanism or a logical connection mechanism, or both. Often, there is a one-to-one mapping of logical connections to physical connections; however, it is possible to have more than one logical connection associated with single physical connection or more than one physical connection associated with a single logical connection. Regardless, management of connections to a clustered database that comprises multiple server instances executing on multiple machines is amplified as the number of instances, machines and clusters increases. An important and challenging feature that is expected from a clustered database is management of many connections to the clustered database server.
Generally, a connection is a vehicle to perform work with a database. A business transaction may comprise one or more work requests. When using a connection pool, an application “borrows” a connection from a connection pool, executes the work requests, and then returns the connection back into the connection pool.